<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // 数据代理：官方叫法 
        // 数据劫持


        const obj = {
            name: 'cc'
        }

        // const obj2 = {};
        // Object.defineProperty(obj2, 'name', {
        //     get() {
        //         return obj.name
        //     },
        //     set(v) {
        //         obj.name = v
        //     }
        // })


        // // obj.name = 'yy' ;
        // obj.sex = '女';

        // console.log(obj2.sex);



        // 数据代理
        const obj2 = new Proxy(obj, {
            get(target, property) {
                return target[property]
            },
            set(target, property, v) {
                target[property] = v
            }
        })

        console.log(obj2);

        // 原数据新增了属性或者方法，劫持后的数据也都有
        obj.sex = '女';


        console.log(obj2.sex);    // 也可以访问

    </script>

</body>

</html>